package com.boatAnchorAssistant.service.service.in;

import com.boatAnchorAssistant.pojo.dto.department.CreateTopDepartmentDto;
import com.boatAnchorAssistant.pojo.dto.department.EditTopDepartmentDto;
import javax.validation.Valid;
import nirvana.core.domains.vo.PageResult;
import com.boatAnchorAssistant.pojo.param.department.*;
import com.boatAnchorAssistant.pojo.vo.department.*;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;


/**
 * 【描 述】：部门服务
 * 【环 境】：J2SE
 * 【详 细】：
 *
 */
public interface DepartmentService {

    /**
     * 创建部门
     * @param param
     */
    void createDepartment(CreateDepartmentParam param);

    /**
     * 修改部门
     * @param param
     */
    void editDepartment(EditDepartmentParam param);

    /**
     * 移除部门
     * @param id
     */
    void removeDepartment(Long id);

    /**
     * 启动/禁用部门
     * @param id
     */
    void enabledDepartment(Long id);

    /**
     * 获取部门详情
     * @param id
     * @return
     */
    GetDepartmentVo getDepartment(Long id);

    /**
     * 获取部门列表
     * @param param
     * @return
     */
    PageResult<GetDepartmentListVo> getDepartmentList(GetDepartmentListParam param);


    /**
     * 获取部门下拉列表
     *
     * @param param
     * @return
     */
    List<GetDepartmentDownListVo> getDepartmentDownList(GetDepartmentDownListParam param);


    /**
     * 设置部门负责人
     * @param param
     */
    void setDepartmentLinkman(SetDepartmentLinkmanParam param);


    /**
     * 创建顶级部门
     * @return
     */
    void createTopDepartment(CreateTopDepartmentDto dto);


    /**
     * 编辑企业顶级部门
     * @param dto
     */
    void editTopDepartment(EditTopDepartmentDto dto);


    /**
     * 批量删除部门
     * @param idList
     */
    void bathRemoveDepartment(List<Long> idList);


}